package com.meisupic.copyright.domain.vo;

import com.meisupic.copyright.common.AuthorizeRuleEnum;
import com.meisupic.copyright.validategroups.Published;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
import javax.validation.constraints.Digits;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Past;
import lombok.Data;
import org.hibernate.validator.constraints.Length;
import org.hibernate.validator.constraints.NotBlank;
import org.hibernate.validator.constraints.NotEmpty;
import org.springframework.format.annotation.DateTimeFormat;

/**
 * creation wuxun
 * @version V1.0
 * @Description: 作品登记VO
 * @date 2018/1/19 20:46
 */
@Data
public class CopyRightWorksVo implements Serializable {

  private static final long serialVersionUID = 4837996056417625555L;

  private Long id;

  /**
   * 作品名称.
   */
  @NotEmpty(message = "作品名称不能为空")
  private String worksFullName;

  /**
   * 作品类型
   */
  @NotEmpty(message = "作品类型不能为空")
  private String worksType;

  /**
   * 作者
   */
  private String author;

  /**
   * 创作完成国家
   */
  @NotBlank(message = "创作完成国家不能为空")
  private String creationCountry;

  /**
   * 创作完成省份
   */
  private String creationProvince;

  /**
   * 创作完成城市
   */
  @NotBlank(message = "创作地点不能为空")
  private String creationCity;

  /**
   * 创作日期
   */
  @NotNull(message = "创作开始日期不能为空")
  @Past(message = "创作开始日期须小于当前日期")
  @DateTimeFormat(pattern = "yyyy-MM-dd",iso = DateTimeFormat.ISO.DATE)
  private Date creationDate;


  /**
   * 发表状态
   */
  @NotNull(message = "请选择发表状态")
  private Integer publishStatus;

  /**
   * 首次发表国家
   */
  @NotEmpty(message = "请选择首次发表国家", groups = Published.class)
  private String firstPublishCountry;

  /**
   * 首次发表省份
   */
  private String firstPublishProvince;

  /**
   * 首次发表城市
   */
  @NotEmpty(message = "请选择首次发表城市", groups = Published.class)
  private String firstPublishCity;

  /**
   * 首次发表日期
   */
  @NotNull(message = "请选择首次发表日期", groups = Published.class)
  @Past(message = "首次发表日期须小于当前日期",groups = Published.class)
  @DateTimeFormat(pattern = "yyyy-MM-dd",iso = DateTimeFormat.ISO.DATE)
  private Date firstPublishDate;

  /**
   * 作品主要特点
   */
  @NotEmpty(message = "作品主要特点不能为空")
  @Length(max = 600,message = "作品主要特点长度不超过200")
  private String mainFeatures;

  /**
   * 权利归属方式
   */
  private Integer rightOwnMode;

  /**
   * 权利取得方式
   */
  private Integer rightFetchMode;

  /**
   * 创作性质
   */
  private Integer creativeNature;

  /**
   * 申请类型
   */
  private Integer applyType;

  /**
   * 委托事项
   */
  private String commitment;

  /**
   * 分类id
   */
  @NotEmpty(message = "请选择作品分类")
  private String categoryId;

  /**
   * 关键词.
   */
  private String keywords;

  /**
   * 授权规则
   */
  @NotNull(message = "请选择授权规则")
  private AuthorizeRuleEnum authorizeRule;

  /**
   * 分成比例
   */
  @NotNull(message = "分成比例不能为空")
  private BigDecimal splitPercentage;

  /**
   * 交易价格
   */
  @Digits(message = "交易价格必须为数字", integer = 10, fraction =1 )
  private Integer price;

  /**
   * 是否为系列作品
   */
  @NotNull(message = "是否为系列作品不能为空")
  private Boolean seriesOfWorks;


  /**
   * 图片名称
   */
  @NotEmpty(message = "请上传图片")
  private List<WorksImageVo> imagesName;

  /**
   * 创作声明
   */
  private String creativeStatement;

  /**
   * 原创声明
   */
  private String originalStatement;

  /**
   * 合作创作声明
   */
  private String cooperationStatement;

  /**
   * 法人创作声明
   */
  private String LegalCreationStatement;

  private String authCertFileUrl;

  /**
   * 创作目的
   */
  private String creativePurpose;

  private String rCode;

  private Integer subWorksType;

}
